#ifndef __OUTPUT_H
#define __OUTPUT_H

#include "Directories.h"
#include "Global.h"
#include <stdbool.h>

typedef enum OutputDirections
{
	OD_NONE = 0,
	OD_LOG = 1,
	OD_SCREEN = 2,
	OD_MODEM = 4
} outDirections_t;

typedef enum Encoding
{
	EN_ASCII = 0,
	EN_PETSCII = 1,
	EN_ATASCII = 2,
	EN_ANSI = 3
} encoding_t;

// Outputs a string to the specified directions.
// If the output is to go to the modem, then the encoding is applied to that output stream.
bool outputString(encoding_t encoding, outDirections_t directions, const char *value);
bool __fastcall__ outputStringML(encoding_t current, encoding_t encoding, outDirections_t directions, const char *value);

void outputCharacter(encoding_t encoding, outDirections_t directions, char c);
void __fastcall__ outputCharML(encoding_t current, encoding_t encoding, outDirections_t directions, char c);

// Outputs a file to the specified directions.
// If the output is to go to the modem, then the encoding is applied to that output stream.
int outputFile(encoding_t encoding, outDirections_t directions, const char *name, dirInfo_t *dir);
#endif